package loaders

import (
	"context"

	"github.com/sirupsen/logrus"
)

// Loader 基础加载器接口
type Loader interface {
	Load(ctx context.Context) ([]Document, error)
}

// Document 文档结构
type Document struct {
	Content  string                 `json:"content"`
	MetaData map[string]interface{} `json:"metadata"`
	FilePath string                 `json:"file_path"`
}

// BaseLoader 基础加载器实现
type BaseLoader struct {
	FilePath string
}

// NewBaseLoader 创建基础加载器
func NewBaseLoader(filePath string) *BaseLoader {
	return &BaseLoader{
		FilePath: filePath,
	}
}

// logInfo 记录信息日志
func (l *BaseLoader) logInfo(message string, fields ...map[string]interface{}) {
	logger := logrus.WithField("file_path", l.FilePath)
	if len(fields) > 0 && fields[0] != nil {
		for k, v := range fields[0] {
			logger = logger.WithField(k, v)
		}
	}
	logger.Info(message)
}

// logError 记录错误日志
func (l *BaseLoader) logError(err error, message string) {
	logrus.WithError(err).WithField("file_path", l.FilePath).Error(message)
}
